#!/bin/sh

set -e


case "$1" in
    configure)
        # ensure /var/lib/snapd/lib/gl is cleared
        if dpkg --compare-versions "$2" lt-nl "2.0.7"; then
            ldconfig
        fi

        # Ensure that we undo the damage done by the snap.mount unit that was present
        # in snapd 2.31.
        #
        # We found that update scripts make systemd stop inactive mount units and this
        # in turn stops all the units that depend on it so when the snap.mount unit is
        # stopped all the per-snap mount units gets stopped along with them.  The 2.31
        # release was only out briefly in xenial-proposed and bionic but to keep the
        # affected users safe let's start all the per-snap mount units so that snaps no
        # longer appear as broken after update.
        if dpkg --compare-versions "$2" ge-nl "2.31" && \
                dpkg --compare-versions "$2" lt-nl "2.32"; then
            units=$(systemctl list-unit-files --full | grep '^snap[-.]' | cut -f1 -d ' ' | grep -vF snap.mount.service || true)
            mounts=$(echo "$units" | grep '^snap[-.].*\.mount$' || true)
            for unit in $mounts; do
                # ensure its really a snap mount unit or systemd unit
                if ! grep -q 'What=/var/lib/snapd/snaps/' "/etc/systemd/system/$unit" && ! grep -q 'X-Snappy=yes' "/etc/systemd/system/$unit"; then
                    echo "Skipping non-snapd systemd unit $unit"
                    continue
                fi

                echo "Starting $unit"
                deb-systemd-invoke start "$unit" || true
            done
        fi
        # Ensure that the void directory has correct permissions.
        chmod 111 /var/lib/snapd/void
esac

#DEBHELPER#
